import { NextRequest, NextResponse } from 'next/server'
import { withErrorHandling } from '@/lib/auth-middleware'
import { getUsers } from '@/lib/database'
import { generateToken, verifyPassword } from '@/lib/auth-service'

export const POST = withErrorHandling(async (request: NextRequest) => {
  try {
    const { email, password } = await request.json()

    // 验证输入
    if (!email || !password) {
      return NextResponse.json(
        { error: '邮箱和密码不能为空' },
        { status: 400 }
      )
    }

    // 从数据库验证管理员账户
    const users = await getUsers()
    const user = users.find(u => u.email === email && u.role === 'ADMIN')

    if (!user) {
      return NextResponse.json(
        { error: '管理员账户不存在' },
        { status: 401 }
      )
    }

    // 验证密码（如果用户有密码字段）
    if (user.password) {
      const isValidPassword = await verifyPassword(password, user.password)
      if (!isValidPassword) {
        return NextResponse.json(
          { error: '密码错误' },
          { status: 401 }
        )
      }
    } else {
      // 如果没有密码字段，检查是否是默认管理员
      if (email !== 'admin@example.com' || password !== 'admin123') {
        return NextResponse.json(
          { error: '认证失败' },
          { status: 401 }
        )
      }
    }

    // 使用统一的token生成函数
    const token = generateToken({
      id: user.id,
      email: user.email,
      name: user.name,
      role: user.role
    })

    return NextResponse.json({
      success: true,
      data: {
        token,
        user: {
          id: user.id,
          email: user.email,
          name: user.name,
          role: user.role
        }
      },
      message: '管理员登录成功'
    })

  } catch (error) {
    console.error('管理员登录失败:', error)
    return NextResponse.json(
      { error: '服务器内部错误' },
      { status: 500 }
    )
  }
})